#ifndef XFUZZY_INFERENCE_ENGINE
#define XFUZZY_INFERENCE_ENGINE

typedef struct {
 double (* and)();
 double (* or)();
 double (* also)();
 double (* imp)();
 double (* not)();
 double (* very)();
 double (* moreorless)();
 double (* slightly)();
 double (* defuz)();
} OperatorSet;

typedef struct {
 double min;
 double max;
 double step;
 double param[5];
 double (* compute_eq)();
 double (* compute_greq)();
 double (* compute_smeq)();
 double (* center)();
 double (* basis)();
} MembershipFunction;

typedef struct {
 int crisp;
 double crispvalue;
 int length;
 double degree[50];
 MembershipFunction conc[50];
 int inputlength;
 double input[2];
 OperatorSet op;
} FuzzyNumber;


#endif /* XFUZZY_INFERENCE_ENGINE */

#ifndef XFUZZY_ParkingBlaze1
#define XFUZZY_ParkingBlaze1


typedef struct {
 MembershipFunction mf0;
 MembershipFunction mf1;
 MembershipFunction mf2;
 MembershipFunction mf3;
 MembershipFunction mf4;
 MembershipFunction mf5;
 MembershipFunction mf6;
} TP_Tx;

typedef struct {
 MembershipFunction mf0;
 MembershipFunction mf1;
 MembershipFunction mf2;
 MembershipFunction mf3;
 MembershipFunction mf4;
 MembershipFunction mf5;
 MembershipFunction mf6;
} TP_Tangle;

typedef struct {
 MembershipFunction mf0;
 MembershipFunction mf1;
 MembershipFunction mf2;
} TP_TWheel;

typedef struct {
 MembershipFunction mf0;
 MembershipFunction mf1;
 MembershipFunction mf2;
} TP_TY;

 void ParkingBlaze1InferenceEngine();

#endif /* XFUZZY_ParkingBlaze1 */
